package com.semac.client.aplicacao;

import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.semac.client.rpc.ServicoAutenticacaoRPC;
import com.semac.client.rpc.ServicoAutenticacaoRPCAsync;
import com.semac.shared.model.Pessoa;

public class AplicacaoController {	
	private static AplicacaoController instance = null;
	private static Pessoa pessoaLogada = null;

	
	//servico para conversar com o servidor.
	private ServicoAutenticacaoRPCAsync servico = ServicoAutenticacaoRPC.Util.getInstance();
	
	private  AplicacaoController() {
	}
	
	
	public static Pessoa getPessoaLogada(){
		return pessoaLogada;
	}

	
	public static AplicacaoController getInstance(){
		if (instance == null){
			instance = new AplicacaoController();			
		}		
		return instance;
	}
	
	
	
	public void start(){
		this.refresh();
	}
	
	

	public void refresh(){		
		//pega no servidor a pessoa guardada na session
		this.servico.getPessoaLogada(new AsyncCallback<Pessoa>() {
			@Override
			public void onSuccess(Pessoa result) {
				//e decide qual pagina deve ser mostrada pra ela
				pessoaLogada = result;
				PaginasController.getInstance().refresh();
			}
			@Override
			public void onFailure(Throwable caught) {
				Window.alert("Erro contactando servidor!");
				pessoaLogada = null;
				PaginasController.getInstance().refresh();
			}
		});
	}


	
	
	
	
}
